package view;

import java.util.ArrayList;

import org.uqbar.arena.aop.windows.TransactionalDialog;
import org.uqbar.arena.layout.ColumnLayout;
import org.uqbar.arena.widgets.Button;
import org.uqbar.arena.widgets.Label;
import org.uqbar.arena.widgets.Panel;
import org.uqbar.arena.widgets.Selector;
import org.uqbar.arena.widgets.tables.Column;
import org.uqbar.arena.widgets.tables.Table;
import org.uqbar.arena.windows.WindowOwner;

import ApplicationModels.AsignacionAppModel;
import Domain.Empleado;
import Transformers.IntegerToLocalDateTransformer;

import com.uqbar.commons.collections.Transformer;

@SuppressWarnings("serial")
public class CrearAsignacionWindow extends
		TransactionalDialog<AsignacionAppModel> {

	public CrearAsignacionWindow(WindowOwner parent, AsignacionAppModel model) {
		super(parent, model);

	}

	@Override
	protected void createFormPanel(Panel mainPanel) {
		this.setTitle("Crear una asignación");
		mainPanel.setLayout(new ColumnLayout(1));
		new Label(mainPanel).setText("asignacion para el: ");
		new Label(mainPanel).bindValueToProperty("fechaTurno");

		this.configurarHorarios(mainPanel);

		this.crearTabla(mainPanel);
	}

	public void crearTabla(Panel mainPanel) {
		Table<Empleado> table = new Table<Empleado>(mainPanel, Empleado.class);
		table.setHeigth(200);
		table.setWidth(650);

		table.bindItemsToProperty("listaDeEmpleados");
		table.bindValueToProperty("empleadoSeleccionado");

		this.describeResultsGrid(table);

	}

	private void describeResultsGrid(Table<Empleado> table) {
		new Column<Empleado>(table)
				//
				.setTitle("Nombre y Apellido").setFixedSize(150)
				.bindContentsToProperty("nombreYApellido");

		Column<Empleado> col = new Column<Empleado>(table);
		col.setTitle("puede ocupar turno?").setFixedSize(150);
		col.bindContentsToTransformer(new Transformer<Empleado, String>() {
			public String transform(Empleado e) {
				return getModelObject().getEstado(e);
			}
		});
	}

	private void configurarHorarios(Panel mainPanel) {
		Panel panelInterior = new Panel(mainPanel);

		new Label(panelInterior).setText("Desde: ");
		Selector<ArrayList<Integer>> horaDesde = new Selector<ArrayList<Integer>>(
				mainPanel);
		horaDesde.bindItemsToProperty("horariosPosibles");
		horaDesde.bindValueToProperty("horaDesde").setTransformer(
				new IntegerToLocalDateTransformer());

		new Label(panelInterior).setText("Hasta: ");
		Selector<ArrayList<Integer>> horaHasta = new Selector<ArrayList<Integer>>(
				mainPanel);
		horaHasta.bindItemsToProperty("horariosPosibles");
		horaHasta.bindValueToProperty("horaHasta").setTransformer(
				new IntegerToLocalDateTransformer());

		new Button(mainPanel).setCaption("Buscar");
	}

	@Override
	protected void addActions(Panel actionsPanel) {
		new Button(actionsPanel).setCaption("Asignar");

	}

}
